The Universal Serial Bus (USB) is a connection standard which allows a variety of peripheral devices to be easily attached to computers supporting the standard. It has become widely adopted.
The USB standard was created by an alliance of some of the largest companies in the computer and communication industry. The latest specification defining USB is Revision 3.0 of November 2008, and is here referred to as the “USB Specification”, which term can include future modifications and revisions. The USB standard is non-proprietary and is maintained by an open industry organization known as the USB Forum. The USB Specification establishes a number of criteria, which must be met in order to be compliant to USB standards. The USB Specification and information about the standard are available at www.usb.org.
The USB standard has the great advantage from the user's point of view in that it permits peripherals to be readily connected to computing devices often with no manual configuration to be made by an end user.
The USB is a strict master-slave bus. There is one USB master, usually called “host”. The host acts as master of the bus, controlling all communications. Typically, the USB host is a computing device, such as a personal computer. Devices, or peripherals, communicate with the host only if so commanded by the host. USB peripherals are defined by the USB specification as being of two types: “hubs” and “functions”. “Functions” are referred to here as “USB-compliant devices” or “devices”. The USB is based on a tiered star topology with one hub at the center of each star. Each “ray” from each “star” terminates in exactly one hub or device. Hubs convert a single upstream attachment point into multiple downstream attachment ports. Either a device or another hub can be attached to such a downstream port. In this manner, the USB specification limit of 127 unique USB-compliant devices attached at any given time can be attained. Devices include computer peripherals such as keyboards, mice, joy sticks, cameras, printers, external storage devices, multi-media devices and the like. Since all device communications eventually converge at the host, and there can be up to 127 devices on the same bus, time allocation on the bus is extremely critical. The USB specification addresses this issue, and other issues, with a detailed definition of electrical signaling, data format and communication protocol. Briefly, the protocol divides time on the bus into one millisecond frames, which may be further subdivided into eight 125 microsecond microframes for the high speed version of the bus, defines a number of transfer types, and tightly controls timing, including the time of response from hubs or USB-compliant devices to host commands. The tight timing control is necessary to provide for maximum bus bandwidth while maintaining communication integrity and error checking.
The USB specification has made great advances in facilitating the connection of up to 127 of a wide variety of devices to any USB-enabled computer, using only one connector type. In providing this capability and convenience, a number of tradeoffs had to be made, which result in limiting the application of the USB in many situations. The following three USB specification requirements limit its application in many situations. First, the tight timing specification has the consequence that in practice devices have to be no further away from the host than 30 meters. Even this can only be achieved by connecting five hubs in series, since the cabling limit is 5 meters between a device and a hub. Both the relatively short absolute length of 30 meters and the inconvenience and cost of having to use five extra hubs are a limitation in many computer applications. Second, the USB specification allows any number of devices of the same type, such as several keyboards or several mice, to be connected simultaneously. This is a desirable feature in itself, since there are many applications where access to one computer is needed from several workstations. The disadvantage arises that all such devices have simultaneous access to the computer, allowing more than one user to enter or alter data, for example, possibly resulting in errors and undesirable results. Third, the tight timing specification and protocol definition limit the ability to switch one device from one host, or computer, to another. If the communications protocol is not adhered to or the timing specification violated during switching, the host will detect an error, and after several recovery attempts, will declare the device “inoperable” and refuse to communicate with it. In addition, practical implementations of the USB specification requirements in commercially available computer operating systems that support USB put a time limit on getting a response to requests to a device. Even if no error is detected by the host, if a device continues to NAK host requests, eventually the host will declare the device “inoperable”. This may happen if the device is not locally emulated, as is the practice in many existing products, but the device is accessed to obtain true responses from the device, and the device is at a significant distance from the host. One way to switch one device from one host to another is to either physically unplug it or to simulate unplug by appropriate signaling. Then to connect it to another host, or computer, by physically plugging it in or by simulating plug in by appropriate signaling. Both unplugging a device and plugging it in, result in a processing delay in the host. It takes the host time to detect device unplug, and additional time to detect and process device plug in. On plug in, the host goes through an extensive process, called “enumeration”, to determine the type and capabilities of a device and to “connect” it to the USB. These delays are undesirable in many computer system applications.
Solutions that enhance USB in these areas would be very desirable in many computer system applications. Especially desirable would be one solution that overcomes all limitations indicated above. The present invention offers a solution to all the limitations identified hereinabove.
The prior art has addressed mainly the limitation in connection distance between a peripheral and the host. U.S. Pat. No. 6,363,085 to Samuels describes the use of an active repeater. This system's ability to improve the distance is limited, since it only decreases the propagation delay in the cable, which does not result in a significant increase in distance. U.S. Pat. Nos. 6,571,305 and 6,922,748, both to Engler, describe a system consisting of two intelligent emulators. One, at the host end, emulates a device, the second one, at the device end, emulates a host. The device emulator satisfies all timing requirements to the host, and the host emulator does the same at the device end. However, the information flow is limited to data from the peripheral device to the host. There is no provision for the host to determine the nature and detailed capabilities of the connected device, since the communications channel in the direction from the host to device carries only error reports. That is, the host is not able to perform enumeration on the real device, only on the device emulator. Many peripheral devices, while conforming to USB definitions and specifications for a device type, also have unique features and capabilities. Such capabilities are communicated to the host in response to host requests during enumeration, which will not be made known to the host in this system. The system is thereby limited to handle only devices that are specifically emulated in the device emulator. The lack of a communications channel from host to device also prevents the host from commanding the device, which is needed in many devices. For instance, conventional keyboards have indicators that light to indicate Caps Lock, Num Lock and Scroll Lock. Engler has no provisions for such capabilities. Engler also does not have capability to signal the host when a device, as opposed to the device emulator, has been plugged in or unplugged. U.S. Pat. No. 6,381,666 to Kejser et al., describe an “extended range hub”, consisting of a Local Expander and a Remote Expander. In similarity to Engler, two units are provided. One, the Local Expander, is located at the host. The second, the Remote Expander, is located at the device. This system improves on Engler by providing for host request pass-on to the real device. However, Kejser does not provide for error handling, and does not provide for timing management to prevent running into the babble condition at the Remote Expander either on sending data to the remote device or requesting data from it. Kejser also does not treat the “high-speed” protocol features, introduced by revision 2.0, the current revision of the USB specification, such as split transactions, the NYET handshake, nor “chirp” or “squelch” signaling. Similar to Kejser, U.S. Pat. No. 6,954,808 to Russell describes an USB extension system consisting of two hubs, a transmitter hub and a receiver hub, interconnected by a non-USB compliant link. Russell has no provisions to insure that the hub located at the host, the transmitter hub, is able to respond to host communications within the time required by the USB specification, instead response timing is dependent on timing from the device and the speed of the communications channel between the two hubs. U.S. Pat. No. 6,708,247 to Barret et al. describes a system consisting of a host controller and a remote hub, interconnected by a non-USB compliant bus. Barret requires that the host controller be modified in accordance with the invention. U.S. Pat. No. 6,961,798 to Ferguson provides for extension of certain USB devices via non-USB communications media. However, the invention requires that the host be modified with transmitter circuits of the invention. U.S. Pat. No. 6,934,793 to Ying et al. treats sharing one USB device among up to four PC hosts. However, there is no provision in Ying's multiplexer to assure that the timing requirements of the USB specification are met or any provisions to avoid collision of communications from the plurality of PC's. None of the above prior art covers the situation where an USB-compliant device or multiple devices connect selectively to a number of USB hosts while meeting the timing requirements of the USB specification, nor do they cover the situation where multiple USB-compliant devices connect to the same host and are enabled selectively while meeting the timing requirements of the USB specification, nor the use of standard, unmodified USB hosts, hubs, and USB-compliant devices, nor provide true enumeration responses for a wide class of devices.
It would be advantageous to have a method and system that does not have such limitations and omissions, and that handles the additional protocol cases and conditions introduced by revision 3.0 of the USB specification, including handling USB high-speed and super speed communications, and requires no modifications to USB hosts, hubs or to USB-compliant devices.
The present invention overcomes these limitations and provides enhancements in connection separation length between USB-compliant device and USB host, in switching one or more devices among many hosts and in connecting many devices to the same host with control over their communications such that they do not interfere with one another, and in providing to the host true enumeration responses from USB-compliant devices, not just emulating them. The present invention requires no changes or modifications to USB hosts, hubs or to USB-compliant devices; standard hosts, hubs and devices can be used with the current invention.